package DataStructure.TreeLearning.BinarySortTree;

import java.util.List;

public interface MyBinarySortTree<Item> {
    // 添加元素
    public boolean add(Item item);

    // 删除元素
    public boolean remove(Item item);

    // 删除元素_递归
    public boolean remove_Recursion(Item item);

    // 查找元素
    public boolean contains(Item item);

    // 前序遍历 栈实现
    public List<Item> preOrder_Stack();
    // 前序遍历 递归实现
    public List<Item> preOrder_Recursion();

    // 中序遍历 栈实现
    public List<Item> inOrder_Stack();
    // 中序遍历 递归实现
    public List<Item> inOrder_Recursion();

    // 后序遍历 栈实现
    public List<Item> postOrder_Stack();
    // 后序遍历 递归实现
    public List<Item> postOrder_Recursion();

    // 层级遍历
    public List<Item> levelOrder_Queue();

    // 建树操作
    // 根据中序和后序建树
    public void buildTreeByInAndPost(List<Item> inOrder, List<Item> postOrder);

    // 根据前序和中序建树
    public void buildTreeByPreAndIn(List<Item> preOrder, List<Item> inOrder);


}
